perm filename FAKE14.SAI[DOC,TOB] blob
sn#079450 filedate 1973-12-22 generic text, type T, neo UTF8
00100 comment
00200 this version of fake finds the angular and position
00300 errors for the edge operator as a function of step height,
00400 position, and angle;
00500 comment
00600 conf=sqrt(s0sq/(s0sq+n0sq)) ie cosine
00700 diff=s0sq;
00800
00900 BEGIN "EDGE_TEST"
01000
01100 DEFINE SAFE_ARRAY=1; comment this makes all arrays safe;
01200 REQUIRE "VISION.2[SYS,TOB]" SOURCE_FILE; comment vision language package;
01300 REQUIRE EDGE_FILE;
01400 REQUIRE EDGE_PRINT;
01500 REQUIRE TV_VARIABLES;
01600 REQUIRE FAKE_FILE; ! file for fake edges;
01700
01800
01900 DEFINE MAX_COUNT=2000;
02000 INTEGER ENOUGH; ! how many samples (< max_count);
02100
02200 ENOUGH←MAX_COUNT;
02300 EJINIT; ! init Hueckel operator;
02400 MODIFY(BITS);
00100 comment find the angular and position errors at threshold;
00200 TCRLF;
00300 WHILE YES("ANGULAR AND POSITION ERROR LOOP?") DO BEGIN "ERR_BLOCK"
00400 INTEGER K;
00500 INTEGER N;
00700 SHORT REAL ALPHA,SUM_ALPHA,SUMSQ_ALPHA;
00800 SHORT REAL DELTA,SUM_DELTA,SUMSQ_DELTA;
00900 SHORT REAL STD_ALPHA,STD_DELTA;
01100
01200 MODIFY(ENOUGH);
01300 ASK_FAKE;
01305 NOISE_EDGE←NOISE_FAKE;
01310 ASK_EDGE; ! ask for values for edge operator cutoffs;
02100 WHILE YES("TEST EDGE OPERATOR? ") DO BEGIN "TST_LOOP"
02200 FAKE;
02300 OP_APPLY(NBHD_FAKE/2,NBHD_FAKE/2); ! try the edge operator on it;
02400 ERROR_FAKE(ALPHA,DELTA); ! get angle and perpend distance errors;
02500 TCRLF;PRINT(ALPHA);
02900 PRINT(DELTA);
03000 END "TST_LOOP";
03100 SUM_ALPHA←SUMSQ_ALPHA←SUM_DELTA←SUMSQ_DELTA←0;
03200 N←0;
03300 FOR K←1 STEP 1 UNTIL ENOUGH DO BEGIN "ERR_LOOP"
03400 IF K MOD 20 = 0 THEN PRINT(K);
03500 FAKE;
03600 IF EJLI(NBHD_FAKE/2,NBHD_FAKE/2,0,0)∧¬BCOMP THEN BEGIN "INCR"
03700
03800 N←N+1;
03850 ERROR_FAKE(ALPHA,DELTA); ! errors angle and perpend distance;
04200 SUM_ALPHA←SUM_ALPHA+ALPHA;
04300 SUMSQ_ALPHA←SUMSQ_ALPHA+ALPHA↑2;
04500 SUM_DELTA←SUM_DELTA+DELTA;
04600 SUMSQ_DELTA←SUMSQ_DELTA+DELTA↑2;
04700 END "INCR";
04800 END "ERR_LOOP";
04900 TCRLF;PRINT(N);PRINT(SUMSQ_DELTA);PRINT(SUM_DELTA);
05000 TCRLF;PRINT(SUMSQ_ALPHA);PRINT(SUM_ALPHA);
05100 STD_ALPHA←SQRT((SUMSQ_ALPHA-SUM_ALPHA↑2/N)/N);
05200 STD_DELTA←SQRT((SUMSQ_DELTA-SUM_DELTA↑2/N)/N);
05300 TCRLF;
05400 PRINT(STD_ALPHA);
05500 PRINT(STD_DELTA);
05600 END "ERR_BLOCK";
05700 END "EDGE_TEST";